home *** CD-ROM | disk | FTP | other *** search
-
- Fehler- und Änderungsreport
- ---------------------------
-
- Der Report wird chronologisch von hier an bis unten gelesen. Die
- Zeilen "*** [...] Fertigstellung [...] ***" stehen unter den bis
- dahin gemachten Änderungen.
-
-
- Bibliothek
- ----------
- - WindowLists und TextWindows benutzen nicht mehr FastGEM0, da angeblich
- noch Fehler bei Benutzung von Bigscreen auftreten.
-
- *** 17.12.90 Fertigstellung der Version 2.2, Compiler 4.0 ***
-
- Bibliothek
- ----------
- - Der Gepard-Editor stützt nicht mehr dauernd beim Verlassen ab (trat nicht
- bei jedem Anwender auf, aber wenn, dann massiv). Das KbdEvents-Modul
- wurde entsprechend korrigiert und kann nun wieder benutzt werden.
- - Modula-System funktioniert nun auch mit dem 68030er Board "hyperCACHE 030".
- - Strings.Compare arbeitet wieder richtig mit Umlauten.
- - Directory: SetCurrentDir/SetDefaultPath rufen GEMDOS nicht mehr auf, wenn
- der Pfad leer ist, weil das bei TOS 1.0/1.2 zu Fehlern führt (es erfolgt
- sonst Zugriff auf das Laufwerk A: und Dsetpath() liefert einen Fehlercode).
- - Bei TOS 1.2 tritt kein Fehler mehr auf, wenn in der Shell das Sternchen
- ("*") im Pfadnamen der Parameterdatei eingegeben wird.
- - Text.ReadToken funktioniert nun auch bei Disk-Files (las bisher immer nur
- ein Zeichen ein).
- - Files.Open/Create, Directory.MakeFullPath und FileNames.ValidatePath
- funktionieren nun auch mit Umlauten im Namen, da die Umlaute intern nun
- nicht mehr von Klein nach Groß gewandelt werden.
- - EasyGEM0/AESForms.FormAlert optimiert: brauchen nun weniger Stack.
- - EasyGEM1.SelectFile korrigiert (veränderte den GemHandle, was dann zu GEM-
- Laufzeitfehlern führen konnte).
- - Convert.ConvReal (auch StrToReal, WriteReal, ...) löst bei Verwendung der
- TT-FPU keine Laufzeitfehler mehr aus, wenn der Eingabestring keine gültige
- Real-Zahl darstellt, sondern setzt - wie dokumentiert - 'valid' auf FALSE.
- - Die 68030-Erkennung (Modul SysInfo) funktioniert nun.
- - TimeConv.DateToText zerstört nicht mehr die geschützten Register (D3-D6).
- Dieser Fehler führte u.A. zu Range-Errors und Fehlern in FOR-Schleifen.
- - TextWindows: Die VT52-Codes 'moveUp', 'insertLine' und 'deleteLine' funktio-
- nieren wieder korrekt, der Cursor ist wieder sichtbar.
- - TEMPUS und andere gelinkte Programme lassen sich (wieder) resident laden,
- ohne daß bei wiederholtem Aufruf der geladenen Programme Fehler auftreten.
- - Bisher konnten GDOS-Fonts zwar geladen, aber nicht über die verfügbaren
- Funktionen der GEM-Bibliothek benutzt werden, da "GetFaceName" dazu ein
- Rückgabeparameter fehlt.
- Die Lösung ist im neuen Definitionstext von 'VDIInquires' (Ordner "SRC\D")
- beschrieben; eine neue Version von 'TextDemo' (DEMO-Ordner) zeigt auch
- die Anwendung der Benutzung der GDOS-Fonts.
- - VDIAttributs.SetAbsTHeight/SetPtsTHeight waren die RückgabeWerte für Zellen-
- und Zeichengröße vertauscht. Sie werden nun in der korrekten Reihenfolge
- geliefert.
- - Wird nach "LoadFonts" der UnloadFonts-Aufruf am Ende vergessen, sorgt
- das MM2-Laufzeitsystem dafür beim ExitGem oder Programmende.
- - Die Loader-Funktion 'CallModule' erlaubt nun auch die ARGV-Methode zur
- Übergabe von Argumentzeilen > 125 Zeichen. Wie's geht, steht im Loader-
- Definitionstext.
- - Loader.CallModule sollte nun auch mit Dateinamen > 40 Zeichen klarkommen.
- - Wird eine offene Datei "CON:" vom System geschlossen, tritt kein Laufzeit-
- fehler (Uninitialisierte Pointer-Variable) im TextWindows-Modul mehr auf.
- - AESEvents.ButtonEvent erzeugt nun keine Abstürze mehr, wie z.B. "Fehler in
- der Heap-Verwaltung".
- - FileManagement.FileInformation berücksichtigt Ordner und kann auch
- Datum/Zeit verändern.
- - StrConv.StrTo(L)Num/Convert.ConvTo(L)Num liefern wieder korrekte Ergebnisse
- bei Werten > 256.
- - VDIOutputs.PolyMarker funktioniert nun korrekt und hinterläßt keine Daten
- mehr auf dem A3-Stack.
- - In MOSConfig können nun _alle_ abzufangenden Exceptions bestimmt werden;
- Der Vektor für "Division durch Null" wird nicht mehr verändert, damit
- unter dem Modula-System laufende Programme (z.B. bestimmte GDOS-Treiber)
- keine solche Fehlermeldung mehr unnötigerweise hervorrufen. Der Compiler
- prüft Divisionen durch Null nun auf andere Weise.
- - TextWindows.Open liefert nun FALSE im success-Parameter, wenn sich das
- Fenster nicht mehr öffnen läßt, weil schon zu viele GEM-Fenster sichtbar
- sind. Bisher trat dann ein Laufzeitfehler auf.
- - XBIOS.SetKeyTable funktioniert nun.
- - AESForms.FormKeyboard: Die Parameter 'ch' und 'nextObj' waren fälschlicher-
- weise intern vertauscht.
- - WindowLists.ViewLineWL arbeitet nun definitionsgemäß.
- - ObjHandler.CreateSpecification funktioniert nun auch, wenn der Parameter
- 'spec' nicht NIL ist.
-
- ModRef
- ------
- - ModRef (Version 1.4) erlaubt die Angabe zweier Direktiven in der Argument-
- zeile: "-C" unterdrückt das Warten auf eine Taste, wenn Source-Dateien nicht
- gefunden werden, "-Q" unterdrückt alle Ein-/Ausgaben (schließt "-C" ein).
-
- LibManager
- ----------
- - Kein String-Überlauf mehr im LibManager beim Kopieren einzelner Dateien.
-
- GME
- ---
- - Keine Abstürze mehr, nachdem ein Block markiert und mit ^X ausgeschnitten
- wird.
- - Wird "KonfigSpeichern" in GMEConfig.InitConfig nicht aktiviert, wird auch
- nicht nach der Datei "GME.GME" gesucht.
- - Abspeichermöglichkeiten bei Programmabsturz verbessert: Nun erscheint eine
- Dateiauswahlbox und es besteht die Möglichkeit, ein Backup zu erzeugen.
-
- Compiler
- --------
- - Die mehrdimensionalen offenen Felder sind benutzbar.
- - LENGTH liefert keine falschen Werte mehr bei Array- und Record-Zugriffen.
- - Es kommt nun die richtige Fehlermeldung, wenn beim Array-Zugriff mehr
- Indices verwendet werden, als erlaubt sind.
- - Die Direktiven $A und $W verhalten sich nun wie im Handbuch beschrieben.
- - "VAL (Real-Typ, Ganzzahl-Ausdruck)" führt bei TT-FPU nicht mehr zu
- fatalen Laufzeitfehlern, wie Bus-/Address Error oder Illegal Instruction.
- - Mehrere Fehler beim Vergleich von Variablen vom Prozedur-Typ behoben.
- - Bei umfangreichen Importen tritt nicht mehr die Fehlermeldung "Typ muß
- identisch mit VAR-Parameter sein" auf.
- - Importierte externe Variablen (Vars mit fester Adreßbestimmung) haben
- nun die korrekte Adresse.
- - INC (x, 0) erzeugt keinen Mist mehr.
- - ABS (regVar/forVar) verändert die Register-Variable nicht mehr.
- - Compiler erkennt nun Fehler, wenn unter bestimmten Umständen (z.B. EXPORT
- aus lokalem Modul) die Prozedur-Implementation mehr Parameter als ihre
- Definition hat.
- - Kein Programmabsturz mehr bei Short-REAL-Ausdrücken (ohne FPU) als
- aktuelle Parameter, wie z.B. bei "WriteReal ( f(a) / f(b) )".
- - Ein Ausdruck "0 - x" wird nun korrekt erzeugt - vorher wurde der Wert
- nicht negiert.
- - Conversion von REAL/LONGREAL nach SHORTINT/SHORTCARD erkennt nun alle
- Überläufe.
- - Mehrere Fehler mit lokalen Modulen behoben, u.A. kein interner Fehler mehr
- bei FORWARD-Dekl. Prozeduren, die in einem lokalen Modul implementiert werden
- und die Register A5/A6 werden nicht mehr von Modulen lokal zu Prozeduren
- zerstört.
- - Vor einer Division wird der Divisor (bei aktiviertem Range-Check) nun auf
- Null geprüft, damit der eigentlich zuständige Exception-Vektor nicht mehr
- benötigt wird.
- - Kein Programmabsturz mehr bei Aufruf von Prozeduren über Prozedurvariablen,
- wenn die Proz. Open Array-Parameter hat.
- - SHIFT/ROTATE erlauben nun variable Schiebewerte (s. LIESMICH.TXT).
-
- Linker
- ------
- - Es konnte vorkommen, daß der Linker die Fehlermeldung "out of memory"
- bei großen Modulen anzeigte und sich auch durch Vergrößerung des freien
- Speichers nicht davon abbringen lies: Es war noch eine invariable Größe
- im Programm versteckt. Sie bestimmt die Anzahl der relozierbaren Adressen
- pro Modul (s. Aufbau der Codemodule) und hatte eine Maximalgröße von 1000.
- Dieser Wert kann nun ggf. von außen bestimmt werden. Dazu ist beim Aufruf
- des Linkers, zum Beispiel von einer Batch-Datei aus, in der Argumentzeile
- die Option "-R" mit dem neuen Wert anzugeben, also im Batch z.B.
- "LINK <name> -R2000".
- - Vom C-Linker "MM2CLink" erzeugte Module können nun uneingeschränkt
- optimiert gelinkt werden.
-
- Shell
- -----
- - Die Menüzeile hat nun die korrekte Höhe und bildet keinen falschen Strich
- mehr am unteren Rand.
- - Vor Start und nach Rückkehr von Programmen schließt die Shell auch die
- noch offenen Fenster von Accessories.
- - Das Starten von Programmen, deren Länge von Pfad + Name mehr als 40 Zeichen
- umfaßt, ist nun wieder möglich.
- - Die MM2Shell installiert die Icons der vorhandenen Laufwerke jetzt erst
- _nach_ dem Ausführen der Shell-Batch-Datei. Weiterhin bieten beide Shell
- die zusätzlichen Batch-Anweisungen POSTAMBLE1 und POSTAMBLE2, mit denen
- das Starten von zwei Programmen vor Verlassen der Shell gestartet werden
- können. Mehr dazu im LIESMICH.TXT, "Erweiterungen in der Shell".
- - Die Datei-Information ist nun auch bei Ordnern möglich, allerdings hat sie
- nur ab TOS 1.4 Sinn, um den Ordnernamen zu verändern.
- - Die "bye bye"-Meldung beim Programmende wurde entfernt.
- - Durch eine Korrektur im Loader können nun auch gelinkte (!) Programme
- gestartet werden, wenn ein gleichnamiges Modul in der Shell resident ist.
- Beispiel: Ein Programm "SYSINFO.PRG" führt nicht mehr zur Verwechselung mit
- dem residenten Modul "SysInfo".
- - Die Formatier-Funktion kann nun wieder beide Laufwerke ansprechen.
-
- *** 17.4.91 Stand: Shell 2.2b, Compiler 4.1, GME 1.1, Linker 2.15 ***
-
- Bibliothek
- ----------
- - Loader.CallModule: Module, die das Bit 7 im Kennungsbyte des Modul-Headers
- gesetzt haben (zeigt 68020-Code an, s. Handbuch A.9), rufen keine Fehler-
- meldung (FPU nicht vorhanden) mehr hervor.
- - MathLib0.exp/pwrOfTen/pwrOfTwo melden keinen Überlauf-Fehler mehr bei
- bestimmten negativen Argumenten (ca. -1000 bis -5000) sondern liefern
- anstandslos Null.
- - Mit MM2 erzeugte Programme laufen nun auch auf dem Mega STE und mit
- PAMs Net problemlos.
- - Dokumentation im Def-Text von VDIInputs zu RequestLoc/TestLoc sowie
- Show-/HideMouse erweitert.
- - VDIInquires.GetLineStyle funktioniert nun, allerdings liefert das VDI
- bei derzeitigen TOS-Versionen keine Werte zu den LineEnding-Parametern,
- weshalb die Prozedur dann immer 'edgedLn' liefert. Sollte das VDI jedoch
- die Werte liefern, werden automatisch die richtigen Werte weitergegeben.
- - Das Runtime-Modul für die TT-FPU verwendet nun auch die schnelleren 32 Bit-
- Operationen der 68020/30 f. Multiplikation und Division. Das wirkt sich
- praktisch auf alle solchen LONGCARD/LONGINT-Operationen aus, da der Compiler
- hierzu immer die Runtime-Funktionen verwendet.
- - Multiplikationen von negativen Werten mit Konstanten haben u.U. falsche
- Werte erzeugt, auch wurden bei Integer-Multiplikationen keine Überläufe
- trotz $R+ gemeldet. Ist behoben (Runtime-Modul).
-
- *** 1.5.91 Stand: Shell 2.2c ***
-
- Bibliothek
- ----------
- - Die RandomGen-Funktionen zerstören nicht mehr das reservierte Register D3.
- - VDIControls.LoadFonts/UnloadFonts wurden nochmal korrigiert.
-
- Shell
- -----
- - Bei manueller Eingabe einer Arbeitsdatei wird diese auf den angegebenen
- Source-Pfaden gleich gesucht und der vollständige Pfad mit eingetragen.
-
- GME
- ---
- - GMEConfig: Definitionstexte aktualisiert, so daß kein Versionskonflikt
- mehr bei Neuübersetzung auftritt.
-
- *** 21.5.91 Stand: Shell 2.2d ***
-
- Bibliothek
- ----------
- - Storage/StorBase.Enlarge() liefern endlich korrekten 'ok'-Wert.
- - Bei Verwendung alternativer Betriebssysteme, wie z.B. "KAOS", werden
- keine falschen ExitCodes (s. PrgCtrl.TermProcess) mehr zurückgegeben.
- - EasyGEM0.DoSimpleBox stürzt nicht mehr ab, wenn man Dialog mit Doppelklick
- verläßt.
- - InOut.ReadReal/ReadLReal funktionieren wieder, wenn Eingabe von Datei
- kommt (durch Aufruf von Redirect-/OpenInput).
- - FPUSupport.Save/RestoreContext funktionieren nun bei ST-FPU korrekt.
- - Debug/TOSDebug: Erzeugen keine falschen Ergebnisse mehr bei Real-Ausrücken.
- - VDIAttributes.DefUserFill ist nun benutzbar.
- - Files.GetFileName liefert den _Rest_ des Dateinamens, wenn die String-
- Variable nicht für den ganzen Namen reicht.
-
- Compiler
- --------
- - Tritt der Fehler 807 (Überlauf des Bezeichner-Stacks) auf, kann der Stack
- über die Direktive "/I" vergrößert werden. Die Normalgröße ist 2000 Byte,
- um ihn zu verdoppeln, ist beispielsweise "/I4000" in der Direktivenzeile
- einzugeben.
- - Bei Zugriff auf Record-Elemente können nun Leerzeichen auch hinter dem
- Punkt stehen.
- - Kein interner Fehler mehr, wenn bei $D+ Felder aus Konstant-Strukturen
- selektiert/indiziert werden (z.B. "VT52.Seq[VT52.clearEOS]").
- - In FOR-Schleifen werden die evtl. verwendeten Register (D3-D7) nun immer
- als Longword gesichert. Vorher wurde ggf. nur das Low-Word gerettet aber
- dann durch eine MOVEQ-Instruktion das obere Word doch zerstört.
-
- Shell
- -----
- - MM2SHELL.RSC: Lösch-/Kopier-Dialogox kommt auch mit mehr als 999 Dateien
- klar.
-
- Linker
- ------
- - Dürfte nun fehlerfrei mit dem Turbo-C Linker "MM2CLink" zu verwenden sein.
-
- GME
- ---
- - Wird der Editor mit ALT-X (Beenden) verlassen und auf die Frage, ob
- ein geänderter Text gespeichert werden soll, mit Nein geantwortet, fragt
- er nun trotzdem auch bei weiteren evtl. nicht gesicherten Texten nach.
-
- *** 9.8.91 Stand: Shell 2.2e, Compiler 4.1b, Linker 2.18, GME 1.2 ***
-
- Bibliothek
- ----------
- - Debug (GEMDebug) rettet ggf. den Fehlerstatus des letzten GEM-Aufrufs,
- so daß auch bei $D+ immer noch nach einem GEM-Aufruf der Fehler im
- Programm mit "GEMEnv.GemError()" abgefragt werden kann und nicht sofort
- ein GEM-Fehler gemeldet wird.
- - Loader: CallModule/LoadModule zerstören nicht mehr die Register D3/A4.
- - TextWindows.Open: Im Fehlerfall bleiben keine Speicherleichen zurück.
- - VDIInputs.KeyboardState dürfte nun funktionieren.
- - VDIEscapes.WriteToMetafile korrigiert.
-
- Compiler
- --------
- - "CAST (SHORTCARD, -1) DIV 2" liefert nun korrektes Ergebnis (=$7FFF).
- - TC-Parameterübergabe benutzt A0/A1 auch bei PROCEDURE-Types.
- - TC-Parameterübergabe kommt auch mit mehreren ADDRESS-Parametern klar.
-
- *** 15.9.91 Stand: Shell 2.2f, Compiler 4.1c, Linker 2.18, GME 1.2 ***
-
- Shell
- -----
- - Die Box für die Linker-Optionen wurde erweitert. Entsprechend ist auch
- die Projekt-/Parameterdatei erweitert worden, weshalb die bisherigen
- M2P-Dateien nicht mehr von der neuen Shell akzeptiert werden. Wollen Sie
- Ihre alten M2P-Dateien weiterverwenden, können Sie sie mit dem Programm
- CONV_M2P.M aus dem UTILITY-Ordner konvertieren. Näheres im Quelltext.
- - Beide Shells laufen unter MultiGEM. Ist allerdings das GDOS "AMCLIGHT"
- installiert, darf die Shell dann nicht mehr verlassen werden, weil sonst
- das System abstürzt!
- - Die Shell sollte nun auch unter der Multitask-Erweiterung "MiNT" laufen.
-
- Bibliothek
- ----------
- - MathLib0: Die Funktionen ld, ln, log, logar, power, lnP1 und artanh liefern
- beim Megamax-Format (also ohne FPU) nun auch korrekte Werte bei vollständiger
- Optimierung.
- - ShellMsg: Der Def-Text wurde verändert, d.h., daß fremde übersetzte Module,
- die ShellMsg importieren, nun Versionskonflikte hervorrufen werden.
- Das dürfte z.B. beim Turbo C-Linker MM2CLink der Fall sein, der dann ggf.
- beim Autor upzudaten ist.
- - Files: SetDateTime setzt nun wirklich 'state' auf Null und verändert nicht
- mehr ein Word irgendwo im Speicher.
- - ObjHandler kommt nun mit erweiterten Objekttypen zurecht.
- - Strings: Append schreibt nicht mehr hinter Ziel-String weiter, falls der
- Ziel-String dabei vollständig gefüllt wird und der Source-String mit 0C endet.
- - Das System sollte nun auch unter der Multitask-Erweiterung "MiNT" laufen.
- Ein Hinweis dazu: Die Benutzung der XBIOS-Funktion "Supexec()" während der
- Prozeßterminierungsphase führt zum sofortigen Ende des Programms. D.h,
- Prozeduren, die über "CatchProcessTerm" bei Programmende aufgerufen werden,
- dürfen Supexec nicht aufrufen, sondern sollten stattdessen die MM2-Funktion
- "Calls.CallSupervisor" oder die GEMDOS- Funktion "Super" benützen.
-
- Compiler
- --------
- - Die Code-Adressen in der Protokoll-Datei stimmen nun wieder mit den Angaben
- bei einem Laufzeitfehler und beim Scanner überein.
- - Werden Strings-Literale (Zeichenketten) an offene Felder übergeben,
- z.B. "WriteString ('abc')", wird dem String nun immer ein Null-Byte (0C)
- angefügt und auch der HIGH-Wert ist entsprechend um Eins höher.
- Aber Vorsicht: Werden String-Variable übergeben, können die immer noch
- bis zum letzten Zeichen gefüllt sein, so daß nicht sicher ist, daß jeder
- String immer mit einem Null-Byte abgeschlossen ist. Diese Änderung wurde
- v.A. zur Erleichterung im Umgang mit der Magic GEM Bibliothek von Peter
- Hellinger eingeführt, wo es nun nicht mehr nötig ist, ein extra 0C-Zeichen
- an Zeichenketten bei der Übergabe an die TOS-Funktionen anzufügen.
- - Keine Fehler oder Datenmüll mehr beim Übersetzen im GME mit Debug-Modus ($D+).
- - "Konstante IN Set-Konstante" liefert nun richtige Ergebnisse.
- - Der Set-Operator für symmetrische Differenz "/" berücksichtigt nun nicht
- mehr nur die ersten 8 Elemente bei Sets bis 32 Elemente (z.B. BITSET).
- - Kein interner Fehler mehr bei vergessenen Klammern von Funktionsaufrufen.
- - Kein interner Fehler mehr bei $D+ und LONGREAL-Funktionsergebnissen.
- - Kein Fehler mehr bei LONGINT-Division, wenn durch eine Konst >= 2^16 geteilt
- wird.
- - Kein Arithmetischer Überlauf mehr bei Indizierung mit LONGCARD-Variablen auf
- Arrays mit Feldgröße > 1 Byte (z.B. bei 'LONGARRAY OF CARDINAL').
-
- Linker
- ------
- - Erzeugt nun optional eine Symboldatei, in der alle Module und Prozeduren
- samt ihren Adressen im erzeugten Programm aufgeführt werden.
- Mehr dazu im LIESMICH, Kapitel 9. (Linker).
-
- *** 03.04.92 Fertigstellung der Version 2.3, Compiler 4.2, Linker 2.19 ***
-
- - Achtung: Die beim vorigen System 2.3 mitgelieferte Datei MM2DEF.M2L ist
- defekt! Sie muß mit dem Programm RepairLIB korrigiert werden!
-
- Compiler V4.2c
- --------------
- - Coroutinen funktionieren wieder (kein Stacküberlauf mehr). Der Fehler
- lag im Runtime-Modul.
- - Vergißt man ein RETURN in einer Prozedur, die ein Ergebnis liefern soll,
- wird dies nun auch zur Laufzeit wieder erkannt (V4.2b tat dies nicht).
-
- Linker V2.20
- ------------
- - Erzeugt nun optional eine Datei, die die Module in der Reihenfolge
- auflistet, in der sie initialisiert werden. Dazu ist beim MM2Link-Aufruf
- die Option "-I" zu verwenden. Es wird dann eine Datei mit dem Namen
- des gelinkten Programms und der Endung "M2I" erzeugt. S.a. LIESMICH.TXT
-
- Bibliothek
- ----------
- - GEM (EventHandler): Watchdog auf "timer" kann nicht mehr zu Stacküberlauf
- führen (kein rekursiver ShareTime-Aufruf mehr).
- - TextWindows: Der Zeichensatz (Font) kann nun gewählt werden. Dazu ist die
- Funktion "ReSpecify" erweitert worden. Näheres im Def-Text.
- - WindowLists: Der Zeichensatz (Font) kann nun gewählt werden. Dazu ist die
- Funktion "SetListWL" erweitert worden. Näheres im Def-Text.
- - WindowLists.AddEntryWL/AppendEntryWL/RemoveEntryWL funktionieren nun
- korrekt.
- - Das InOut-Fenster hat keinen "force"-Modus mehr, d.h, es wird nicht mehr
- automatisch nach vorne geholt, wenn Ausgaben darauf geschehen. Wen das
- stört, soll einfach "noForce" durch "forceCursor" im Modul "GEMIO.I"
- ersetzen und nach Neuübersetzung die Shell neu linken.
- - TextWindows: Auch, wenn Force-Modus = "noForce", wird Fenster nach vorn
- geholt, wenn eine Eingabe erwartet wird.
- - VDIInputs: Die Funktionen 'InstallTimerProc', 'RemoveCurChgProc',
- 'InstallMsMoveProc' und 'InstallButChgProc' funktionieren (wieder).
- - GEMEnv: Trat beim letzten GEM-Aufruf ein Fehler auf, wird er nicht mehr
- automatisch mit einer Fehlermeldung angezeigt sondern ignoriert. Soll
- wie gewohnt ein Fehler gemeldet werden, ist GEMEnv.ErrorProc einer Prozedur
- zuzuweisen, die den Fehler meldet - die bisher dafür benutzte Routine sah
- so aus:
- (*$L-*)
- PROCEDURE GemErrorHandler;
- BEGIN
- ASSEMBLER
- TRAP #6
- DC.W MOSGlobals.GemErr
- END
- END GemErrorHandler;
- (*$L=*)
- Die GemError()-Abfrage funktioniert weiterhin.
- - Files.Create: Nun geht der Modus 'appendSeqTxt' auch unter MiNT/MTOS.
- - GrafBase.LFramePoints funktioniert nun korrekt.
- - Start unter Mag!X-Versionen über V2.0 funktioniert nun (Modul 'MOSCtrl').
- - Der Loader kann nun die Module auch ins TT-RAM laden.
- - Definition des internen Moduls 'ModBase' wurde verändert.
- - TimeConvert.DateToText/TimeToText korrigiert (D.Steins)
- - Loader: Wenn sowohl eine ST- als auch eine TT-FPU im Rechner vorhanden war,
- wurden Module für die ST-FPU unter der passend gelinkten Shell mit einer
- Fehlermeldung abgewiesen. Das ist behoben.
- - AESMisc: FindApplication funktioniert nun.
- - GEMError: LoaderMsg[17] verbessert.
- - PrgCtrl/MOSCtrl/M2Init: Der Deinitialisierungsvorgang wurde geändert: Nun
- werden die (über CatchProcessTerm/CatchRemoval) angemeldeten Abmeldfunktionen
- sofort bei Beendigung des Programms (per TermProcess) aufgerufen. Bisher
- passierte dies erst in einer Routine, die im vom TOS bereitsgestellten
- etv_term-Vektor eingeklinkt ist. Das bereitete teilweise aber Probleme mit
- Betriebssystemen, wie MiNT oder Mag!X. Nur für den Fall, daß das Programm
- nun auf eine "unsaubere" Art über einen direkten Aufruf von GEMDOS.Pterm()
- abgebrochen wird (passiert z.B., wenn man im Templemon das "Q"-Kommando
- benutzt und wenn man Ctrl-C während einer Ein-/Ausgabe über GEMDOS, z.B.
- durch Einbinden des GEMDOSIO-InOut-Treibers, drückt), wird die Abmeldephase,
- wie früher, über die im etv_term-Vektor installierte Routine durchgeführt.
- Allerdings wird dann u.U. ein falscher Exitcode an das aufrufende Programm
- zurückgegeben (dafür gibt es dann aber auch keine Probleme mehr mit MiNT
- oder Mag!x). Da dies aber die Ausnahme ist, sollte es nicht weiter stören.
- Unterm Strich bedeutet das: Man sollte das Programm nie mit einem direkten
- Aufruf der GEMDOS-Funktion Pterm() sondern über PrgCtrl.TermProcess beenden.
- - Das Granule-Modul hatte noch einige böse Fehler, bei denen es Speicher
- überschrieb, der ihm nicht gehörte. Das machte offenbar meist keine Probleme
- auf den alten TOS-Versionen, während es unter Mag!X schnell zu Abstürzen
- führte. So lief der GME-Editor z.B. überhaupt nicht unter Mag!X (er benutzt
- Granule als einziges MM2-Programm).
-
- Compiler V4.3
- -------------
- - Konstanten werden nicht mehr mitten im Code sondern dahinter abgelegt.
- Solche, die mit der CONST-Anweisung deklariert sind, werden nur noch
- einmal abgelegt, egal, wie oft sie benutzt werden (bisher wurden solche
- Konstanten pro Zugriff jeweils separat im Code abgelegt).
- - Damit der Loader die Module im TT-RAM ablegt, legt der Compiler im Modul-
- Header bei Offset 58 ein Long ab, das wie beim Header in gelinkten Programmen
- die Flags für Verwendung des TT-RAM usw. enthält. Der Wert ist immer 7.L,
- d.h, jedes mit diesem Compiler erzeugte Modul landet im TT-RAM, wenn vor-
- handen.
-
- Compiler V4.3b
- --------------
- - Sollte Code für die "ST-FPU" unter der entsprechend gelinkten Shell erzeugt
- werden, klappte es nicht ohne die Direktive "+F", wenn zusätzlich eine
- TT-FPU im Rechner vorhanden war. Dies ist korrigiert.
-
- Linker V2.31
- ------------
- - Konstanten werden wie Prozeduren beim optimierten Linken ggf. wegoptimiert.
- Die Konstanten werden allerdings noch nicht im DATA-Segment abgelegt sondern
- gehören weiterhin zum CODE-Segment, d.h., sie dürfen nicht verändert werden
- (was ja z.B. durch SYSTEM.CADR möglich wäre)!
- - Ein echtes DATA-Segment kann nun erzeugt werden. Mehr dazu im LIESMICH.TXT.
-
- *** 15.01.94 Fertigstellung der Version 2.3e, Compiler 4.3b, Linker 2.31 ***
-
- Bibliothek
- ----------
- - Die Routinen für die ST-FPU liefen nicht auf Mega STEs. Das lag daran, daß
- entgegen der üblichen Praxis, die Low-Bytes der FPU-Register nicht auf
- ihren ungeraden Adressen angesprochen werden dürfen, sondern nur wortweise,
- sonst tritt ein Address-Error auf. Die Module Convert, Runtime, MathLib0
- (alle im ST_FPU-Ordner) sowie FPUSupport und SFP004 wurden dahingehend
- angepaßt.
- - Startete man in der Shell V2.3e ein gelinktes Programm, das keine eigene
- Error-Behandlung hat und trat dann z.B. ein Bus-Error auf, meldete sich,
- wie üblich, die GEMError-Box der Shell. Allerdings führte die Beendigung
- des Programms auch zur Fehlern und Abbruch der Shell. Dies ist nun wieder
- behoben (lag an Fehler in MOSCtrl).
- - Das Feature der vorigen Version, daß der Loader die Module im TT-RAM ablegt,
- falls möglich, führte nun beim Granule-Modul zu Fehlern, weshalb u.a. der
- GME nicht mehr auf TT-Rechnern richtig lief. Der Fehler ist nun im Granule-
- Modul so korriert, daß es wieder nur den Speicher das ST-RAM benutzt, auch
- wenn TT-RAM verfügbar wäre. Wer das Granule-Modul so einsetzen möchte, daß
- auch das TT-RAM benutzt wird, soll sich an T.Tempelmann wenden. Es ist eine
- einfache Lösung dafür möglich, die allerdings ca. 100 KB bei TT-Rechnern
- zusätzlich verschwendet.
- Nebenbei wurde die Dokumentation im Definitionstext v. Granule ein wenig
- erweitert.
- - Storage-/StorBase.AllAvail führt nicht mehr zu Abstürzen, wenn der
- verbleibende Stack zu klein ist (passierte v.A. bei Verwendung unter Mag!X).
-
- Compiler V4.3c
- --------------
- - Kein "Stacküberlauf" (Fehler #852) mehr bei komplizierteren Ausdrücken.
- - Der Fehler "BOOLEAN-Ausdruck zu komplex" kommt nun auch erst bei mehr als
- 256 zu erzeugenden Sprungbefehlen innerhalb eines Ausdrucks. Bisher lag
- die Schranke bei 20 (so waren z.B. nur 20 OR-Verknüpfungen innerhalb einer
- IF-Anweisung möglich).
- - Mittels "CONST Wr = InOut.WriteString" kann "Wr" benutzt werden, um auf
- WriteString zuzugreifen.
- - Definitionsmodule erhalten nun die Kennung 6.
- - Kein interner Fehler mehr bei CONST-Anweisungen, bei denen Konstanten mit
- jeweils weniger als 16 Bytes zu einer Konstante mit mind. 16 zusammengesetzt
- werden.
-
- GME
- ---
- - Wie oben beschrieben, funktioniert der GME nun auch wieder bei TT-Rechnern,
- allerdings nutzt er nur ST-RAM.
-
- *** 16.03.94 Fertigstellung der Version 2.3f, Compiler 4.3c ***
-
- Compiler V4.3d
- --------------
- - Die Verwendung des freien Speichers (MiNT, Magix) sowie die
- Aufteilung des verwendeten Speichers (insbes. Fehler 807 und
- 823) kann nun konfiguriert werden (Optionen /<, />, /A, /I).
- Siehe dazu Kap. 8 in LIESMICH.TXT.
- - Bei Verwendung von "Value Constructors" konnte es in der V4.3c
- passieren, daß ein interner Fehler am Ende des Übersetzens
- auftrat, mitunter auch ein Totalabsturz des Rechners, weil dabei
- der gesamte obere Speicher überschrieben wurde.
-
- Bibliothek
- ----------
- - StorBase.MemSize zerstörte das Register D6, was sich auch auf
- Storage.DEALLOCATE auswirkte. Ein zerstörtes D6-Register führt
- z.B. zu falscher Ausführung von FOR-Schleifen.
- - MOSCtrl: Der Deinitialisierungsvorgang wurde nochmal korrigiert,
- so daß es nun nach ausführlichen Tests zu keinen Inkompatibilitäten
- mehr kommt (bisher gab es noch Probleme mit MetaDOS, Quantos und
- einigen anderen Programmen, die sich im TRAP#1 installierten).
-
- Utilities
- ---------
- - Im UTILITY-Ordner befindet sich nun "StorUtils" von Gerd
- Castan. Sie bieten Funktionen zum Überprüfen von allozierten
- Speicherbereichen und damit verbundenen Pointern. Sehr hilfreich
- zum Debuggen komplexer Programme mit dynamischen Datenstrukturen.
-
- *** 08.06.94 Release der Version 2.3g, Compiler 4.3d ***
-
- Compiler V4.3e
- --------------
- - In V4.3c hatte sich durch die Änderung für BOOLEAN-Ausdrücke ein neuer
- Fehler eingeschlichen, der bei einigen Ausdrücken zur Meldung "interner
- Fehler" führte. Ist behoben.
-
- Linker V2.33
- ------------
- - Es konnte vorkommen, daß sich der Linker beim Optimieren aufhängte.
- Dies kommt offenbar davon, daß der Compiler Referenzen auf leere oder
- unbenutzte Konstanten ins das Modul einfügt und der Linker damit nicht
- umgehen konnte. Der "Fehler" ist im Compiler noch drin, aber dürfte
- sich nicht weiter schädlich auswirken.
-
- *** 02.02.95 ***
-
- GEP_ED V2.U
- -----------
- - Anpassung an MagiCMac. Sollte nebenbei nun auch mit anderen Auflösungen
- bei Ataris klarkommen, wurde aber noch nicht getestet.
-
- *** 11.04.95 ***
-
- Bibliothek
- ----------
- - SysInfo.CPU() erkennt nun auch die 68040-CPU
- - Loader/ModBase.ExecProcess: Nach dem Laden & Relozieren von Modulen wird
- der Cache, insbes. bei einer 68040, gelöscht. Dies ist nötig, weil sonst
- gelegentlich Abstürze mit einer 68040-CPU beim Laden von Modulen auftreten.
- (Leider half das nix - es gibt immer noch sporadisch Fehler beim Laden
- der Module unter MagiCMac mit 68040-CPU).
-
- - 29.10.95, M2INIT.M:
- Auf dem Stack werden 32 Byte Platz gelassen, damit es keine
- "Memory Violation" unter MiNT mit aktivem Speicherschutz gibt.
-
- *******************************************************************************
-
- Übrigens, vielen Dank an diejenigen, die uns die Fehler - teils sehr
- ausführlich (auf Disk usw.) - mitgeteilt haben!
-
- Thomas Tempelmann
-